package elEMAS.inf;

public interface elAgent<Genotype> extends Agent<Genotype> {
    
    public void becomeElitist();
    
    public void increaseMeetingCounter();
    
    public void increaseNumOfDominated();
    
    public void increaseNumOfWasDominated();
    
    public void increaseNeighbourCounter();
    
    public int getNeighboursCounter();
    
    public int getNumOfDominated();
    
    public int getNumOfWasDominated();
    
    public int getNumOfMeetings();
    
    public void increasePrestige();
    
    /**
     * (w13) Współczynnik zdominowania
     */
    public double getWasDominatedRatio();
    
    /**
     * (w15) Ilość spotkanych sąsiadów do ilości ogólnie spotkanych.
     */
    public double getDensity();
    
    /**
     * Calculate new average crowdness. It assume that meetingCounter was already increased.
     * @param askingNeighbourCounter
     */
    public void updateCrowdnessAvg(double neighbourRatio);

    public int getPrestige();
    
}
